import Vue from "vue";
import Vuex from "vuex";

Vue.use(Vuex);

export default new Vuex.Store({
  state: {
    // 不同组件共享的数据。
    count: 0,
    user: JSON.parse(window.localStorage.getItem('user') || null)
  },
  // 同步操作在此封装。
  mutations: {
    increment(state) {
      state.count++;
    },
    increment(state, payload) {
      state.count += payload.amount;
    },
    setUser(state, payload) {
      // 将数据存储到payload
      // state.user = payload;
      //  存储为对象的形式，方便使用。
      state.user = JSON.parse(payload);
      // 考虑到网页刷新vuex中的数据就没有了，需要将数据存储到浏览器的本地。本地存储只能存String
      window.localStorage.setItem('user',payload)
    },
  },
  // 异步功能在此封装
  actions: {
    // 用于操作mutations
    increment(context, payload) {
      context.commit("increment", payload);
    },

    incrementHandler(context, payload) {
      setTimeout(() => {
        context.commit("increment", payload);
      }, payload.delay);
    },
  },
  modules: {},
});
